# -*- coding: utf-8 -*-

 ###############################################
 ##                                             ##
 ##   Submódulo modelo                           ##
 ##   @ Módulo equipos                           ##
 ##                                              ##
 ##   de la línea Básicos                        ##
 ##   de Críptidos Digitales                     ##
 ##   GPL (c)2008                                ##
  ##                                             ##
    ###############################################

# print (0), "  equipos.manejador     begin"

import man
# from man import Entidad, Equipo, Rol
from man import *


# print (0), "  equipos.manejador      definitions"


def equipoI(**datos):
    if 'id' in datos.keys():
        equipo = man.session().query(Equipo).filter(Equipo.id==datos['id']).one()
    else:
        try:
            equipo = man.session().query(Equipo).filter(Equipo.propietario_id==datos['propietario_id']).filter(Equipo.noSerie==datos['noSerie']).one()
        except:
            f=g
            equipo = Equipo(**datos)
        equipo.setData(**datos)
        man.session().add(equipo)
        man.session().commit()
    return equipo


def agrega(datos):      # print "clientes.manejador.agregar"
    f=g
    #! obsoleto, use equipoI()

    # tipo, serie, color, origen, propietario, accesorios
    equipo = Equipo(datos['tipo'], datos['serie'], datos['otros'], datos['propietario_id'], datos['accesorios'])

    man.session().add(equipo)
    man.session().flush()

    man.session().commit()


def dameCliente(**filtros):
    registro = rol(**filtros)
    return registro


def dameClientes(**filtros):
    if filtros:
        registros = man.session().query(Rol).filter(Rol.tipo==u'cliente').join(Entidad).filter(Entidad.nombre.like("%s%%" % filtros['nombre'])).all()
    else:
        registros = rol(tipo=u'cliente')
    return registros


def dameUno(**filtros):
    f=g
    #! obsoleto, use equipoI()

    registro = man.session().query(Equipo).filter(Equipo.id==filtros['id']).one()
    return registro


def dameVarios(**filtros):
    f=g
    #! obsoleto, use equiposI()
    registros = man.session().query(Equipo).order_by(Equipo.id).all()
    return registros


def equiposI(**filtros):
    registros = man.session().query(Equipo).order_by(Equipo.id).all()
    return registros


def elimina(**filtros):
    f=g
    #! obsoleto, refactorizar

    equipo = man.session().query(Equipo).filter(Equipo.id==filtros['id']).one()
    man.session().delete(equipo)
    man.session().commit()


def modifica(datos):
    f=g
    #! obsoleto, use equipoI()

    print "equipos.manejador.modifica()"
    equipo = man.session().query(Equipo).filter(Equipo.id==datos['id']).one()
    equipo.tipo = datos['tipo']
    equipo.serie = datos['serie']
    equipo.color = datos['color']
    equipo.origen = datos['origen']
    equipo.propietario_id = datos['propietario_id']
    equipo.accesorios = datos['accesorios']

    man.session().update(equipo)
    man.session().commit()


# print (0), "  equipos.manejador     end"

